package cn.iocoder.yudao.module.media.controller.admin.macvod.vo;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import javax.validation.constraints.*;
import java.math.BigDecimal;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;

@Schema(description = "管理后台 - 电影信息新增/修改 Request VO")
@Data
public class MacVodSaveReqVO {

    @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "29178")
    private Long id;

    @Schema(description = "视频采集平台id", requiredMode = Schema.RequiredMode.REQUIRED, example = "30476")
    @NotNull(message = "视频采集平台id不能为空")
    private Integer sourceId;

    @Schema(description = "是否有更新,1有更新,0未更新", example = "2")
    private Integer updateStatus;

    @Schema(description = "视频id", requiredMode = Schema.RequiredMode.REQUIRED, example = "22066")
    @NotNull(message = "视频id不能为空")
    private Integer vodId;

    @Schema(description = "分类ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "15183")
    @NotNull(message = "分类ID不能为空")
    private Short typeId;

    @Schema(description = "一级分类ID", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "一级分类ID不能为空")
    private Short typeId1;

    @Schema(description = "用户组ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "12001")
    @NotNull(message = "用户组ID不能为空")
    private Short groupId;

    @Schema(description = "视频名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "王五")
    @NotEmpty(message = "视频名称不能为空")
    private String vodName;

    @Schema(description = "副标题", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotEmpty(message = "副标题不能为空")
    private String vodSub;

    @Schema(description = "别名", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotEmpty(message = "别名不能为空")
    private String vodEn;

    @Schema(description = "状态：0未审，1已审", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
    @NotNull(message = "状态：0未审，1已审不能为空")
    private Integer vodStatus;

    @Schema(description = "首字母", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotEmpty(message = "首字母不能为空")
    private String vodLetter;

    @Schema(description = "颜色代码", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotEmpty(message = "颜色代码不能为空")
    private String vodColor;

    @Schema(description = "标签", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotEmpty(message = "标签不能为空")
    private String vodTag;

    @Schema(description = "扩展分类", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotEmpty(message = "扩展分类不能为空")
    private String vodClass;

    @Schema(description = "图片链接", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotEmpty(message = "图片链接不能为空")
    private String vodPic;

    @Schema(description = "缩略图链接", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotEmpty(message = "缩略图链接不能为空")
    private String vodPicThumb;

    @Schema(description = "幻灯图链接", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotEmpty(message = "幻灯图链接不能为空")
    private String vodPicSlide;

    @Schema(description = "截图，多个图片用$$$连接")
    private String vodPicScreenshot;

    @Schema(description = "主演", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotEmpty(message = "主演不能为空")
    private String vodActor;

    @Schema(description = "导演", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotEmpty(message = "导演不能为空")
    private String vodDirector;

    @Schema(description = "编剧", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotEmpty(message = "编剧不能为空")
    private String vodWriter;

    @Schema(description = "幕后", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotEmpty(message = "幕后不能为空")
    private String vodBehind;

    @Schema(description = "简介", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotEmpty(message = "简介不能为空")
    private String vodBlurb;

    @Schema(description = "备注", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotEmpty(message = "备注不能为空")
    private String vodRemarks;

    @Schema(description = "上映日期", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotEmpty(message = "上映日期不能为空")
    private String vodPubdate;

    @Schema(description = "总集数", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "总集数不能为空")
    private Integer vodTotal;

    @Schema(description = "连载数", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotEmpty(message = "连载数不能为空")
    private String vodSerial;

    @Schema(description = "上映电视台", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotEmpty(message = "上映电视台不能为空")
    private String vodTv;

    @Schema(description = "节目周期", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotEmpty(message = "节目周期不能为空")
    private String vodWeekday;

    @Schema(description = "地区", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotEmpty(message = "地区不能为空")
    private String vodArea;

    @Schema(description = "语言", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotEmpty(message = "语言不能为空")
    private String vodLang;

    @Schema(description = "年代", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotEmpty(message = "年代不能为空")
    private String vodYear;

    @Schema(description = "版本（如dvd, hd, 720p）", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotEmpty(message = "版本（如dvd, hd, 720p）不能为空")
    private String vodVersion;

    @Schema(description = "资源类别（如正片, 预告片, 花絮）", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotEmpty(message = "资源类别（如正片, 预告片, 花絮）不能为空")
    private String vodState;

    @Schema(description = "编辑人员", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotEmpty(message = "编辑人员不能为空")
    private String vodAuthor;

    @Schema(description = "跳转URL", requiredMode = Schema.RequiredMode.REQUIRED, example = "https://www.iocoder.cn")
    @NotEmpty(message = "跳转URL不能为空")
    private String vodJumpurl;

    @Schema(description = "独立模板", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotEmpty(message = "独立模板不能为空")
    private String vodTpl;

    @Schema(description = "独立播放页模板", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotEmpty(message = "独立播放页模板不能为空")
    private String vodTplPlay;

    @Schema(description = "独立下载页模板", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotEmpty(message = "独立下载页模板不能为空")
    private String vodTplDown;

    @Schema(description = "是否完结", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "是否完结不能为空")
    private Integer vodIsend;

    @Schema(description = "锁定状态（1表示锁定）", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "锁定状态（1表示锁定）不能为空")
    private Integer vodLock;

    @Schema(description = "推荐级别", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "推荐级别不能为空")
    private Integer vodLevel;

    @Schema(description = "是否开启版权提示", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "是否开启版权提示不能为空")
    private Integer vodCopyright;

    @Schema(description = "访问整个视频所需积分", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "访问整个视频所需积分不能为空")
    private Short vodPoints;

    @Schema(description = "每集点播付费积分", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "每集点播付费积分不能为空")
    private Short vodPointsPlay;

    @Schema(description = "每集下载付费积分", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "每集下载付费积分不能为空")
    private Short vodPointsDown;

    @Schema(description = "总点击量", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "总点击量不能为空")
    private Integer vodHits;

    @Schema(description = "日点击量", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "日点击量不能为空")
    private Integer vodHitsDay;

    @Schema(description = "周点击量", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "周点击量不能为空")
    private Integer vodHitsWeek;

    @Schema(description = "月点击量", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "月点击量不能为空")
    private Integer vodHitsMonth;

    @Schema(description = "时长", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotEmpty(message = "时长不能为空")
    private String vodDuration;

    @Schema(description = "顶数", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "顶数不能为空")
    private Integer vodUp;

    @Schema(description = "踩数", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "踩数不能为空")
    private Integer vodDown;

    @Schema(description = "平均分", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "平均分不能为空")
    private BigDecimal vodScore;

    @Schema(description = "总评分", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "总评分不能为空")
    private Integer vodScoreAll;

    @Schema(description = "评分次数", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "评分次数不能为空")
    private Integer vodScoreNum;

    @Schema(description = "更新时间")
    private LocalDateTime vodTime;

    @Schema(description = "添加时间", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "添加时间不能为空")
    private Integer vodTimeAdd;

    @Schema(description = "点击时间", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "点击时间不能为空")
    private Integer vodTimeHits;

    @Schema(description = "生成时间", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "生成时间不能为空")
    private Integer vodTimeMake;

    @Schema(description = "试看时长（分钟）", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "试看时长（分钟）不能为空")
    private Short vodTrysee;

    @Schema(description = "豆瓣ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "23912")
    @NotNull(message = "豆瓣ID不能为空")
    private Integer vodDoubanId;

    @Schema(description = "豆瓣评分", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "豆瓣评分不能为空")
    private BigDecimal vodDoubanScore;

    @Schema(description = "来源地址", requiredMode = Schema.RequiredMode.REQUIRED, example = "https://www.iocoder.cn")
    @NotEmpty(message = "来源地址不能为空")
    private String vodReurl;

    @Schema(description = "关联视频IDs", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotEmpty(message = "关联视频IDs不能为空")
    private String vodRelVod;

    @Schema(description = "关联文章IDs", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotEmpty(message = "关联文章IDs不能为空")
    private String vodRelArt;

    @Schema(description = "访问内容页密码", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotEmpty(message = "访问内容页密码不能为空")
    private String vodPwd;

    @Schema(description = "获取密码链接", requiredMode = Schema.RequiredMode.REQUIRED, example = "https://www.iocoder.cn")
    @NotEmpty(message = "获取密码链接不能为空")
    private String vodPwdUrl;

    @Schema(description = "访问播放页密码", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotEmpty(message = "访问播放页密码不能为空")
    private String vodPwdPlay;

    @Schema(description = "播放页获取密码链接", requiredMode = Schema.RequiredMode.REQUIRED, example = "https://www.iocoder.cn")
    @NotEmpty(message = "播放页获取密码链接不能为空")
    private String vodPwdPlayUrl;

    @Schema(description = "访问下载页密码", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotEmpty(message = "访问下载页密码不能为空")
    private String vodPwdDown;

    @Schema(description = "下载页获取密码链接", requiredMode = Schema.RequiredMode.REQUIRED, example = "https://www.iocoder.cn")
    @NotEmpty(message = "下载页获取密码链接不能为空")
    private String vodPwdDownUrl;

    @Schema(description = "详细介绍", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotEmpty(message = "详细介绍不能为空")
    private String vodContent;

    @Schema(description = "播放组", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotEmpty(message = "播放组不能为空")
    private String vodPlayFrom;

    @Schema(description = "播放服务器组", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotEmpty(message = "播放服务器组不能为空")
    private String vodPlayServer;

    @Schema(description = "播放备注", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotEmpty(message = "播放备注不能为空")
    private String vodPlayNote;

    @Schema(description = "播放地址", requiredMode = Schema.RequiredMode.REQUIRED, example = "https://www.iocoder.cn")
    @NotEmpty(message = "播放地址不能为空")
    private String vodPlayUrl;

    @Schema(description = "下载租", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotEmpty(message = "下载租不能为空")
    private String vodDownFrom;

    @Schema(description = "下载服务器组", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotEmpty(message = "下载服务器组不能为空")
    private String vodDownServer;

    @Schema(description = "下载备注", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotEmpty(message = "下载备注不能为空")
    private String vodDownNote;

    @Schema(description = "下载地址", example = "https://www.iocoder.cn")
    private String vodDownUrl;

    @Schema(description = "是否包含分集剧情", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "是否包含分集剧情不能为空")
    private Integer vodPlot;

    @Schema(description = "分集剧情名称", example = "张三")
    private String vodPlotName;

    @Schema(description = "分集剧情详情")
    private String vodPlotDetail;

}